package com.xygz.orm.annotations;

import com.xygz.orm.type.TypeHandler;

import java.lang.annotation.*;

/**
 * the description for class TableField
 *
 * @author xiyuan-lgz 2023-09-18 @version v1.0.0 新建与整理
 */
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface TableField {
    
    /**
     * 列名
     */
    String value() default "";
    
    /**
     * 字段注释
     */
    String comment() default "";
    
    /**
     * 字段长度 能够被长度控制的
     */
    int length() default 0;
    
    /**
     * 数据精度可读 对数值类型有效
     *
     * @return 进度单位长度
     */
    int scale() default 0;
    
    /**
     * 是否为数据库表字段
     * <p>
     * 默认 true 存在，false 不存在
     */
    boolean exist() default true;
    
    boolean notNull() default false;// 默认是允许 null
    
    /**
     * 数据类型转换器 是在当前类单例的
     *
     * @return 类型
     */
    Class<? extends TypeHandler> handler() default TypeHandler.class;
}